package RRHH_Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import java.util.Date;

public class RHH_PLANILLA_PROVISION_AGUINAL {

    private int ID;
    private int ID_USUARIO;
    private int ANTIGUEDAD_DIA;
    private int ANTIGUEDAD_MES;
    private int ANTIGUEDAD_ANO;
    private Date FECHA_INGRESO;
    private int DEPARTAMENTO;
    private int REGIONAL;
    private int SUCURSAL;
    private int MESES_TRABAJADOS_ANO_ACTUAL;
    private String CARGO;
    private Date FECHA_RETIRO;
    private double SALARIO_MES_UNO;
    private double SALARIO_MES_DOS;
    private double SALARIO_MES_TRES;
    private double TOTAL;
    private double PROMEDIO_SALARIOS;
    private double MONTO_PROVISIONAR;
    private double MONTO_RETROACTIVO;
    private double TOTAL_MONTO_PROVISIONAR;    
    private int DIAS_TRABAJADOS_ANO_ACTUAL;
    private int ID_CABECERA_AGUINAL;
    private Conexion con = null;

    public RHH_PLANILLA_PROVISION_AGUINAL(Conexion con) {
        this.con = con;
    }

    public RHH_PLANILLA_PROVISION_AGUINAL(int ID, int ID_USUARIO, int ANTIGUEDAD_DIA, int ANTIGUEDAD_MES, int ANTIGUEDAD_ANO, Date FECHA_INGRESO, int DEPARTAMENTO, int REGIONAL, int SUCURSAL, int MESES_TRABAJADOS_ANO_ACTUAL, String CARGO, Date FECHA_RETIRO, double SALARIO_MES_UNO, double SALARIO_MES_DOS, double SALARIO_MES_TRES, double TOTAL, double PROMEDIO_SALARIOS, double MONTO_PROVISIONAR, double MONTO_RETROACTIVO, double TOTAL_MONTO_PROVISIONAR, int DIAS_TRABAJADOS_ANO_ACTUAL, int ID_CABECERA_AGUINAL) {
        this.ID = ID;
        this.ID_USUARIO = ID_USUARIO;
        this.ANTIGUEDAD_DIA = ANTIGUEDAD_DIA;
        this.ANTIGUEDAD_MES = ANTIGUEDAD_MES;
        this.ANTIGUEDAD_ANO = ANTIGUEDAD_ANO;
        this.FECHA_INGRESO = FECHA_INGRESO;
        this.DEPARTAMENTO = DEPARTAMENTO;
        this.REGIONAL = REGIONAL;
        this.SUCURSAL = SUCURSAL;
        this.MESES_TRABAJADOS_ANO_ACTUAL = MESES_TRABAJADOS_ANO_ACTUAL;
        this.CARGO = CARGO;
        this.FECHA_RETIRO = FECHA_RETIRO;
        this.SALARIO_MES_UNO = SALARIO_MES_UNO;
        this.SALARIO_MES_DOS = SALARIO_MES_DOS;
        this.SALARIO_MES_TRES = SALARIO_MES_TRES;
        this.TOTAL = TOTAL;
        this.PROMEDIO_SALARIOS = PROMEDIO_SALARIOS;
        this.MONTO_PROVISIONAR = MONTO_PROVISIONAR;
        this.MONTO_RETROACTIVO = MONTO_RETROACTIVO;
        this.TOTAL_MONTO_PROVISIONAR = TOTAL_MONTO_PROVISIONAR;        
        this.DIAS_TRABAJADOS_ANO_ACTUAL = DIAS_TRABAJADOS_ANO_ACTUAL;
        this.ID_CABECERA_AGUINAL=ID_CABECERA_AGUINAL;
    }

    public int Insertar() throws SQLException {
        String consulta = "insert into BROKER.RHH_PLANILLA_PROVISION_AGUINAL (ID, ID_USUARIO, ANTIGUEDAD_DIA, ANTIGUEDAD_MES, ANTIGUEDAD_ANO, FECHA_INGRESO, DEPARTAMENTO, REGIONAL, SUCURSAL, MESES_TRABAJADOS_ANO_ACTUAL, CARGO, FECHA_RETIRO, SALARIO_MES_UNO, SALARIO_MES_DOS, SALARIO_MES_TRES, TOTAL, PROMEDIO_SALARIOS, MONTO_PROVISIONAR, MONTO_RETROACTIVO, TOTAL_MONTO_PROVISIONAR,DIAS_TRABAJADOS_ANO_ACTUAL,ID_CABECERA_AGUINAL) VALUES (" + ID + "," + ID_USUARIO + "," + ANTIGUEDAD_DIA + "," + ANTIGUEDAD_MES + "," + ANTIGUEDAD_ANO + ","+getFECHA_INGRESO_INSERT()+",'" + DEPARTAMENTO + "','" + REGIONAL + "','" + SUCURSAL + "'," + MESES_TRABAJADOS_ANO_ACTUAL + ",'" + CARGO + "',"+getFECHA_RETIRO_INSERT()+"," + SALARIO_MES_UNO + "," + SALARIO_MES_DOS + "," + SALARIO_MES_TRES + "," + TOTAL + "," + PROMEDIO_SALARIOS + "," + MONTO_PROVISIONAR + "," + MONTO_RETROACTIVO + "," + TOTAL_MONTO_PROVISIONAR + "," + DIAS_TRABAJADOS_ANO_ACTUAL + ","+ID_CABECERA_AGUINAL+")";
        con.EjecutarSentencia(consulta);
        consulta = "select BROKER.RHH_PLANILLA_PROVISION_AGU_SEQ.currval as ID from dual";
        ResultSet rs = con.EjecutarConsulta(consulta);
        rs.next();
        return rs.getInt("ID");
    }

    public boolean Modificar() throws SQLException {
        String consulta = "update BROKER.RHH_PLANILLA_PROVISION_AGUINAL set ID = " + ID + ",ID_USUARIO = " + ID_USUARIO + ",ANTIGUEDAD_DIA = " + ANTIGUEDAD_DIA + ",ANTIGUEDAD_MES = " + ANTIGUEDAD_MES + ",ANTIGUEDAD_ANO = " + ANTIGUEDAD_ANO + ",FECHA_INGRESO = "+getFECHA_INGRESO_INSERT()+",DEPARTAMENTO = '" + DEPARTAMENTO + "',REGIONAL = '" + REGIONAL + "',SUCURSAL = '" + SUCURSAL + "',MESES_TRABAJADOS_ANO_ACTUAL = " + MESES_TRABAJADOS_ANO_ACTUAL + ",CARGO = '" + CARGO + "',FECHA_RETIRO = "+getFECHA_RETIRO_INSERT()+",SALARIO_MES_UNO = " + SALARIO_MES_UNO + ",SALARIO_MES_DOS = " + SALARIO_MES_DOS + ",SALARIO_MES_TRES = " + SALARIO_MES_TRES + ",TOTAL = " + TOTAL + ",PROMEDIO_SALARIOS = " + PROMEDIO_SALARIOS + ",MONTO_PROVISIONAR = " + MONTO_PROVISIONAR + ",MONTO_RETROACTIVO = " + MONTO_RETROACTIVO + ",TOTAL_MONTO_PROVISIONAR = " + TOTAL_MONTO_PROVISIONAR + ",DIAS_TRABAJADOS_ANO_ACTUAL = " + DIAS_TRABAJADOS_ANO_ACTUAL + ", ID_CABECERA_AGUINAL="+ID_CABECERA_AGUINAL+" where ID =  " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public boolean EliminarXid() throws SQLException {
        String consulta = "delete from BROKER.RHH_PLANILLA_PROVISION_AGUINAL where ID= " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }
    public boolean Eliminar(int id_cabecera) throws SQLException {
        String consulta = "delete from BROKER.RHH_PLANILLA_PROVISION_AGUINAL where ID_CABECERA_AGUINAL="+id_cabecera;
        con.EjecutarSentencia(consulta);
        return true;
    }
    public boolean cerrar(int ano, int mes) throws SQLException {
        String consulta = "update BROKER.RHH_PLANILLA_PROVISION_AGUINAL set ESTADO = 0 where ANO= " + ano+" AND MES="+mes;
        con.EjecutarSentencia(consulta);
        return true;
    }

    public RHH_PLANILLA_PROVISION_AGUINAL Buscar(int id) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_PROVISION_AGUINAL where ID = " + getID();
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_PROVISION_AGUINAL> lista = Cargar(rs);
        if (lista.size() > 0) {
            return lista.get(0);
        } else {
            return null;
        }
    }
    public List<RHH_PLANILLA_PROVISION_AGUINAL> BuscarXcabecera(int id_cabecera) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_PROVISION_AGUINAL where ID_CABECERA_AGUINAL = " + id_cabecera;
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);        
    }

    public List<RHH_PLANILLA_PROVISION_AGUINAL> Todos() throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_PROVISION_AGUINAL";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_PROVISION_AGUINAL> lista = Cargar(rs);
        return lista;
    }
    public List<RHH_PLANILLA_PROVISION_AGUINAL> Buscar(int mes, int ano) throws SQLException {        
        String consulta = "select * from BROKER.RHH_PLANILLA_PROVISION_AGUINAL where MES="+mes+" AND ANO="+ano;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_PROVISION_AGUINAL> lista = Cargar(rs);
        return lista;
    }
    public RHH_PLANILLA_PROVISION_AGUINAL Buscarxcabe(int id_cabecera, int id_usuario) throws SQLException {        
        String consulta = "select * from BROKER.RHH_PLANILLA_PROVISION_AGUINAL where ID_CABECERA_AGUINAL="+id_cabecera+" AND ID_USUARIO="+id_usuario;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_PROVISION_AGUINAL> lista = Cargar(rs);
        if(lista.size()>0) return lista.get(0);
        else return null;
    }

    public List<RHH_PLANILLA_PROVISION_AGUINAL> Cargar(ResultSet rs) throws SQLException {
        List<RHH_PLANILLA_PROVISION_AGUINAL> lista = new ArrayList<RHH_PLANILLA_PROVISION_AGUINAL>();
        while (rs.next()) {
            RHH_PLANILLA_PROVISION_AGUINAL objeto = new RHH_PLANILLA_PROVISION_AGUINAL(con);
            objeto.setID(rs.getInt("ID"));
            objeto.setID_USUARIO(rs.getInt("ID_USUARIO"));
            objeto.setANTIGUEDAD_DIA(rs.getInt("ANTIGUEDAD_DIA"));
            objeto.setANTIGUEDAD_MES(rs.getInt("ANTIGUEDAD_MES"));
            objeto.setANTIGUEDAD_ANO(rs.getInt("ANTIGUEDAD_ANO"));
            objeto.setFECHA_INGRESO(rs.getDate("FECHA_INGRESO"));
            objeto.setDEPARTAMENTO(rs.getInt("DEPARTAMENTO"));
            objeto.setREGIONAL(rs.getInt("REGIONAL"));
            objeto.setSUCURSAL(rs.getInt("SUCURSAL"));
            objeto.setMESES_TRABAJADOS_ANO_ACTUAL(rs.getInt("MESES_TRABAJADOS_ANO_ACTUAL"));
            objeto.setCARGO(rs.getString("CARGO"));
            objeto.setFECHA_RETIRO(rs.getDate("FECHA_RETIRO"));
            objeto.setSALARIO_MES_UNO(rs.getDouble("SALARIO_MES_UNO"));
            objeto.setSALARIO_MES_DOS(rs.getDouble("SALARIO_MES_DOS"));
            objeto.setSALARIO_MES_TRES(rs.getDouble("SALARIO_MES_TRES"));
            objeto.setTOTAL(rs.getDouble("TOTAL"));
            objeto.setPROMEDIO_SALARIOS(rs.getDouble("PROMEDIO_SALARIOS"));
            objeto.setMONTO_PROVISIONAR(rs.getDouble("MONTO_PROVISIONAR"));
            objeto.setMONTO_RETROACTIVO(rs.getDouble("MONTO_RETROACTIVO"));
            objeto.setTOTAL_MONTO_PROVISIONAR(rs.getDouble("TOTAL_MONTO_PROVISIONAR"));            
            objeto.setDIAS_TRABAJADOS_ANO_ACTUAL(rs.getInt("DIAS_TRABAJADOS_ANO_ACTUAL"));
            objeto.setID_CABECERA_AGUINAL(rs.getInt("ID_CABECERA_AGUINAL"));
            lista.add(objeto);
        }
        return lista;
    }

    public int getID_CABECERA_AGUINAL() {
        return ID_CABECERA_AGUINAL;
    }

    public void setID_CABECERA_AGUINAL(int ID_CABECERA_AGUINAL) {
        this.ID_CABECERA_AGUINAL = ID_CABECERA_AGUINAL;
    }    
    
    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public int getID_USUARIO() {
        return ID_USUARIO;
    }

    public void setID_USUARIO(int ID_USUARIO) {
        this.ID_USUARIO = ID_USUARIO;
    }

    public int getANTIGUEDAD_DIA() {
        return ANTIGUEDAD_DIA;
    }

    public void setANTIGUEDAD_DIA(int ANTIGUEDAD_DIA) {
        this.ANTIGUEDAD_DIA = ANTIGUEDAD_DIA;
    }

    public int getANTIGUEDAD_MES() {
        return ANTIGUEDAD_MES;
    }

    public void setANTIGUEDAD_MES(int ANTIGUEDAD_MES) {
        this.ANTIGUEDAD_MES = ANTIGUEDAD_MES;
    }

    public int getANTIGUEDAD_ANO() {
        return ANTIGUEDAD_ANO;
    }

    public void setANTIGUEDAD_ANO(int ANTIGUEDAD_ANO) {
        this.ANTIGUEDAD_ANO = ANTIGUEDAD_ANO;
    }

    public String getFECHA_INGRESO() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if(FECHA_INGRESO!=null) return sdf.format(FECHA_INGRESO);
        else return null;
    }
    
    public String getFECHA_INGRESO_INSERT() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if(FECHA_INGRESO!=null)
            return "to_date('"+sdf.format(FECHA_INGRESO)+"','dd/MM/yyyy')";
        else
            return "null";
    }

    public void setFECHA_INGRESO(Date FECHA_INGRESO) {
        this.FECHA_INGRESO = FECHA_INGRESO;
    }

    public int getDEPARTAMENTO() {
        return DEPARTAMENTO;
    }

    public void setDEPARTAMENTO(int DEPARTAMENTO) {
        this.DEPARTAMENTO = DEPARTAMENTO;
    }

    public int getREGIONAL() {
        return REGIONAL;
    }

    public void setREGIONAL(int REGIONAL) {
        this.REGIONAL = REGIONAL;
    }

    public int getSUCURSAL() {
        return SUCURSAL;
    }

    public void setSUCURSAL(int SUCURSAL) {
        this.SUCURSAL = SUCURSAL;
    }

    public int getMESES_TRABAJADOS_ANO_ACTUAL() {
        return MESES_TRABAJADOS_ANO_ACTUAL;
    }

    public void setMESES_TRABAJADOS_ANO_ACTUAL(int MESES_TRABAJADOS_ANO_ACTUAL) {
        this.MESES_TRABAJADOS_ANO_ACTUAL = MESES_TRABAJADOS_ANO_ACTUAL;
    }

    public String getCARGO() {
        return CARGO;
    }

    public void setCARGO(String CARGO) {
        this.CARGO = CARGO;
    }

    public String getFECHA_RETIRO() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if(FECHA_RETIRO!=null) return sdf.format(FECHA_RETIRO);
        else return null;
    }

    public String getFECHA_RETIRO_INSERT() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if(FECHA_RETIRO!=null)
            return "to_date('"+sdf.format(FECHA_RETIRO)+"','dd/MM/yyyy')";
        else
            return "null";
    }
    
    public void setFECHA_RETIRO(Date FECHA_RETIRO) {
        this.FECHA_RETIRO = FECHA_RETIRO;
    }

    public double getSALARIO_MES_UNO() {
        return SALARIO_MES_UNO;
    }

    public void setSALARIO_MES_UNO(double SALARIO_MES_UNO) {
        this.SALARIO_MES_UNO = SALARIO_MES_UNO;
    }

    public double getSALARIO_MES_DOS() {
        return SALARIO_MES_DOS;
    }

    public void setSALARIO_MES_DOS(double SALARIO_MES_DOS) {
        this.SALARIO_MES_DOS = SALARIO_MES_DOS;
    }

    public double getSALARIO_MES_TRES() {
        return SALARIO_MES_TRES;
    }

    public void setSALARIO_MES_TRES(double SALARIO_MES_TRES) {
        this.SALARIO_MES_TRES = SALARIO_MES_TRES;
    }

    public double getTOTAL() {
        return TOTAL;
    }

    public void setTOTAL(double TOTAL) {
        this.TOTAL = TOTAL;
    }

    public double getPROMEDIO_SALARIOS() {
        return PROMEDIO_SALARIOS;
    }

    public void setPROMEDIO_SALARIOS(double PROMEDIO_SALARIOS) {
        this.PROMEDIO_SALARIOS = PROMEDIO_SALARIOS;
    }

    public double getMONTO_PROVISIONAR() {
        return MONTO_PROVISIONAR;
    }

    public void setMONTO_PROVISIONAR(double MONTO_PROVISIONAR) {
        this.MONTO_PROVISIONAR = MONTO_PROVISIONAR;
    }

    public double getMONTO_RETROACTIVO() {
        return MONTO_RETROACTIVO;
    }

    public void setMONTO_RETROACTIVO(double MONTO_RETROACTIVO) {
        this.MONTO_RETROACTIVO = MONTO_RETROACTIVO;
    }

    public double getTOTAL_MONTO_PROVISIONAR() {
        return TOTAL_MONTO_PROVISIONAR;
    }

    public void setTOTAL_MONTO_PROVISIONAR(double TOTAL_MONTO_PROVISIONAR) {
        this.TOTAL_MONTO_PROVISIONAR = TOTAL_MONTO_PROVISIONAR;
    }
   
    public int getDIAS_TRABAJADOS_ANO_ACTUAL() {
        return DIAS_TRABAJADOS_ANO_ACTUAL;
    }

    public void setDIAS_TRABAJADOS_ANO_ACTUAL(int DIAS_TRABAJADOS_ANO_ACTUAL) {
        this.DIAS_TRABAJADOS_ANO_ACTUAL = DIAS_TRABAJADOS_ANO_ACTUAL;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }
}
